# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:张广勤
@Web site: https://www.tunan.wang
@Github:www.github.com
 
@File:key_counts1_0.py
@Time:2024/5/21 15:05

@Motto:不积跬步无以至千里，不积小流无以成江海！
"""

import os
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from collections import defaultdict
from datetime import datetime

def key_counts(key):
    # 初始化一个字典来存储每年“疫情”出现的次数
    year_count = defaultdict(int)

    # 文件夹路径，请替换为你需要遍历的文件夹路径
    folder_path = './news'

    # 遍历文件夹下的所有csv文件
    for filename in os.listdir(folder_path):
        if filename.endswith('.csv'):
            file_path = os.path.join(folder_path, filename)

            # 读取CSV文件
            df = pd.read_csv(file_path)

            # 确保文本列存在并进行遍历计数，这里假设“疫情”出现在名为"text_column"的列中
            # 请根据实际情况替换列名
            for content in df['标题']:
                if key:
                # 计算该内容中“疫情”出现的次数
                    count = content.count(key)
                    # 获取文件创建年份作为统计依据，这里假设文件名中包含了日期信息
                    # 注意：这种方法取决于你的文件命名规则，可能需要调整
                    s = filename.split('_')[1].split('.')[0]
                    year = int(s[:4])  # 假设文件名格式为"year_data.csv"
                    year_count[year] += count

    # 将统计结果转换为 DataFrame 以便绘图
    yearly_counts = pd.DataFrame(list(year_count.items()), columns=['Year', 'Count'])

    # 按年度绘制柱状图
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用SimHei字体显示中文
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    plt.figure(figsize=(10, 6))
    sns.barplot(x='Year', y='Count', data=yearly_counts)
    plt.title(f'Annual Count of ' + key + ' Mentions in CSV Files')
    plt.xlabel('Year')
    plt.ylabel('Mentions')
    # plt.show()
    return plt
